home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2005 October / PCWOCT05.iso / Software / FromTheMag / XAMPP 1.4.14 / xampp-win32-1.4.14-installer.exe / xampp / phpMyAdmin / libraries / export / htmlword.php < prev    next >
PHP Script  |  2005-03-05  |  10KB  |  302 lines

  1. <?php
  2. /* $Id: htmlword.php,v 1.2 2005/03/06 14:54:15 nijel Exp $ */
  3. // vim: expandtab sw=4 ts=4 sts=4:
  4.  
  5. /**
  6.  * Set of functions used to build CSV dumps of tables
  7.  */
  8.  
  9. /**
  10.  * Outputs comment
  11.  *
  12.  * @param   string      Text of comment
  13.  *
  14.  * @return  bool        Whether it suceeded
  15.  */
  16. function PMA_exportComment($text) {
  17.     return TRUE;
  18. }
  19.  
  20. /**
  21.  * Outputs export footer
  22.  *
  23.  * @return  bool        Whether it suceeded
  24.  *
  25.  * @access  public
  26.  */
  27. function PMA_exportFooter() {
  28.     return PMA_exportOutputHandler('</body></html>');
  29. }
  30.  
  31. /**
  32.  * Outputs export header
  33.  *
  34.  * @return  bool        Whether it suceeded
  35.  *
  36.  * @access  public
  37.  */
  38. function PMA_exportHeader() {
  39.     global $charset, $charset_of_file;
  40.     return PMA_exportOutputHandler('<html xmlns:o="urn:schemas-microsoft-com:office:office"
  41. xmlns:x="urn:schemas-microsoft-com:office:word"
  42. xmlns="http://www.w3.org/TR/REC-html40">
  43.  
  44. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  45. <html>
  46. <head>
  47.     <meta http-equiv="Content-type" content="text/html;charset=' . ( isset($charset_of_file) ? $charset_of_file : $charset ) .'" />
  48. </head>
  49. <body>');
  50. }
  51.  
  52. /**
  53.  * Outputs database header
  54.  *
  55.  * @param   string      Database name
  56.  *
  57.  * @return  bool        Whether it suceeded
  58.  *
  59.  * @access  public
  60.  */
  61. function PMA_exportDBHeader($db) {
  62.     return PMA_exportOutputHandler('<h1>' . $GLOBALS['strDatabase'] . ' ' . $db . '</h1>');
  63. }
  64.  
  65. /**
  66.  * Outputs database footer
  67.  *
  68.  * @param   string      Database name
  69.  *
  70.  * @return  bool        Whether it suceeded
  71.  *
  72.  * @access  public
  73.  */
  74. function PMA_exportDBFooter($db) {
  75.     return TRUE;
  76. }
  77.  
  78. /**
  79.  * Outputs create database database
  80.  *
  81.  * @param   string      Database name
  82.  *
  83.  * @return  bool        Whether it suceeded
  84.  *
  85.  * @access  public
  86.  */
  87. function PMA_exportDBCreate($db) {
  88.     return TRUE;
  89. }
  90.  
  91. /**
  92.  * Outputs the content of a table in CSV format
  93.  *
  94.  * @param   string      the database name
  95.  * @param   string      the table name
  96.  * @param   string      the end of line sequence
  97.  * @param   string      the url to go back in case of error
  98.  * @param   string      SQL query for obtaining data
  99.  *
  100.  * @return  bool        Whether it suceeded
  101.  *
  102.  * @access  public
  103.  */
  104. function PMA_exportData($db, $table, $crlf, $error_url, $sql_query) {
  105.     global $what;
  106.  
  107.     if (!PMA_exportOutputHandler('<h2>' . $GLOBALS['strDumpingData'] . ' ' .$table . '</h2>')) return FALSE;
  108.     if (!PMA_exportOutputHandler('<table class="width100" cellspacing="1">')) return FALSE;
  109.  
  110.     // Gets the data from the database
  111.     $result      = PMA_DBI_query($sql_query, NULL, PMA_DBI_QUERY_UNBUFFERED);
  112.     $fields_cnt  = PMA_DBI_num_fields($result);
  113.  
  114.     // If required, get fields name at the first line
  115.     if (isset($GLOBALS[$what . '_shownames']) && $GLOBALS[$what . '_shownames'] == 'yes') {
  116.         $schema_insert = '<tr class="print-category">';
  117.         for ($i = 0; $i < $fields_cnt; $i++) {
  118.             $schema_insert .= '<td class="print"><b>' . htmlspecialchars(stripslashes(PMA_DBI_field_name($result, $i))) . '</b></td>';
  119.         } // end for
  120.         $schema_insert .= '</tr>';
  121.         if (!PMA_exportOutputHandler($schema_insert)) return FALSE;
  122.     } // end if
  123.  
  124.     // Format the data
  125.     while ($row = PMA_DBI_fetch_row($result)) {
  126.         $schema_insert = '<tr class="print-category">';
  127.         for ($j = 0; $j < $fields_cnt; $j++) {
  128.             if (!isset($row[$j]) || is_null($row[$j])) {
  129.                 $value = $GLOBALS[$what . '_replace_null'];
  130.             } else if ($row[$j] == '0' || $row[$j] != '') {
  131.                 $value = $row[$j];
  132.             } else {
  133.                 $value = '';
  134.             }
  135.             $schema_insert .= '<td class="print">' . htmlspecialchars($value) . '</td>';
  136.         } // end for
  137.         $schema_insert .= '</tr>';
  138.         if (!PMA_exportOutputHandler($schema_insert)) return FALSE;
  139.     } // end while
  140.     PMA_DBI_free_result($result);
  141.     if (!PMA_exportOutputHandler('</table>')) return FALSE;
  142.  
  143.     return TRUE;
  144. }
  145.  
  146. function PMA_exportStructure($db, $table, $crlf, $error_url, $do_relation = false, $do_comments = false, $do_mime = false, $dates = false)
  147. {
  148.     global $cfgRelation;
  149.  
  150.     if (!PMA_exportOutputHandler('<h2>' . $GLOBALS['strTableStructure'] . ' ' .$table . '</h2>')) return FALSE;
  151.  
  152.     /**
  153.      * Get the unique keys in the table
  154.      */
  155.     $keys_query     = 'SHOW KEYS FROM ' . PMA_backquote($table) . ' FROM '. PMA_backquote($db);
  156.     $keys_result    = PMA_DBI_query($keys_query);
  157.     $unique_keys    = array();
  158.     while ($key = PMA_DBI_fetch_assoc($keys_result)) {
  159.         if ($key['Non_unique'] == 0) $unique_keys[] = $key['Column_name'];
  160.     }
  161.     PMA_DBI_free_result($keys_result);
  162.  
  163.     /**
  164.      * Gets fields properties
  165.      */
  166.     PMA_DBI_select_db($db);
  167.     $local_query = 'SHOW FIELDS FROM ' . PMA_backquote($db) . '.' . PMA_backquote($table);
  168.     $result      = PMA_DBI_query($local_query);
  169.     $fields_cnt  = PMA_DBI_num_rows($result);
  170.  
  171.     // Check if we can use Relations (Mike Beck)
  172.     if ($do_relation && !empty($cfgRelation['relation'])) {
  173.         // Find which tables are related with the current one and write it in
  174.         // an array
  175.         $res_rel = PMA_getForeigners($db, $table);
  176.  
  177.         if ($res_rel && count($res_rel) > 0) {
  178.             $have_rel = TRUE;
  179.         } else {
  180.             $have_rel = FALSE;
  181.         }
  182.     }
  183.     else {
  184.            $have_rel = FALSE;
  185.     } // end if
  186.  
  187.     /**
  188.      * Displays the table structure
  189.      */
  190.     if (!PMA_exportOutputHandler('<table class="width100" cellspacing="1">')) return FALSE;
  191.  
  192.     $columns_cnt = 4;
  193.     if ($do_relation && $have_rel) {
  194.         $columns_cnt++;
  195.     }
  196.     if ($do_comments && $cfgRelation['commwork']) {
  197.         $columns_cnt++;
  198.     }
  199.     if ($do_mime && $cfgRelation['mimework']) {
  200.         $columns_cnt++;
  201.     }
  202.  
  203.     $schema_insert = '<tr class="print-category">';
  204.     $schema_insert .= '<th class="print">' . htmlspecialchars($GLOBALS['strField']) . '</th>';
  205.     $schema_insert .= '<td class="print"><b>' . htmlspecialchars($GLOBALS['strType']) . '</b></td>';
  206.     $schema_insert .= '<td class="print"><b>' . htmlspecialchars($GLOBALS['strNull']) . '</b></td>';
  207.     $schema_insert .= '<td class="print"><b>' . htmlspecialchars($GLOBALS['strDefault']) . '</b></td>';
  208.     if ($do_relation && $have_rel) {
  209.         $schema_insert .= '<td class="print"><b>' . htmlspecialchars($GLOBALS['strLinksTo']) . '</b></td>';
  210.     }
  211.     if ($do_comments && $cfgRelation['commwork']) {
  212.         $schema_insert .= '<td class="print"><b>' . htmlspecialchars($GLOBALS['strComments']) . '</b></td>';
  213.         $comments = PMA_getComments($db, $table);
  214.     }
  215.     if ($do_mime && $cfgRelation['mimework']) {
  216.         $schema_insert .= '<td class="print"><b>' . htmlspecialchars('MIME') . '</b></td>';
  217.         $mime_map = PMA_getMIME($db, $table, true);
  218.     }
  219.     $schema_insert .= '</tr>';
  220.  
  221.     if (!PMA_exportOutputHandler($schema_insert)) return FALSE;
  222.  
  223.     while ($row = PMA_DBI_fetch_assoc($result)) {
  224.  
  225.         $schema_insert = '<tr class="print-category">';
  226.         $type             = $row['Type'];
  227.         // reformat mysql query output - staybyte - 9. June 2001
  228.         // loic1: set or enum types: slashes single quotes inside options
  229.         if (eregi('^(set|enum)\((.+)\)$', $type, $tmp)) {
  230.             $tmp[2]       = substr(ereg_replace('([^,])\'\'', '\\1\\\'', ',' . $tmp[2]), 1);
  231.             $type         = $tmp[1] . '(' . str_replace(',', ', ', $tmp[2]) . ')';
  232.             $type_nowrap  = '';
  233.  
  234.             $binary       = 0;
  235.             $unsigned     = 0;
  236.             $zerofill     = 0;
  237.         } else {
  238.             $type_nowrap  = ' nowrap="nowrap"';
  239.             $type         = eregi_replace('BINARY', '', $type);
  240.             $type         = eregi_replace('ZEROFILL', '', $type);
  241.             $type         = eregi_replace('UNSIGNED', '', $type);
  242.             if (empty($type)) {
  243.                 $type     = ' ';
  244.             }
  245.  
  246.             $binary       = eregi('BINARY', $row['Type'], $test);
  247.             $unsigned     = eregi('UNSIGNED', $row['Type'], $test);
  248.             $zerofill     = eregi('ZEROFILL', $row['Type'], $test);
  249.         }
  250.         $strAttribute     = ' ';
  251.         if ($binary) {
  252.             $strAttribute = 'BINARY';
  253.         }
  254.         if ($unsigned) {
  255.             $strAttribute = 'UNSIGNED';
  256.         }
  257.         if ($zerofill) {
  258.             $strAttribute = 'UNSIGNED ZEROFILL';
  259.         }
  260.         if (!isset($row['Default'])) {
  261.             if ($row['Null'] != '') {
  262.                 $row['Default'] = 'NULL';
  263.             }
  264.         } else {
  265.             $row['Default'] = $row['Default'];
  266.         }
  267.  
  268.         $fmt_pre = '';
  269.         $fmt_post = '';
  270.         if (in_array($row['Field'], $unique_keys)) {
  271.             $fmt_pre = '<b>' . $fmt_pre;
  272.             $fmt_post = $fmt_post . '</b>';
  273.         }
  274.         if ($row['Key']=='PRI') {
  275.             $fmt_pre = '<i>' . $fmt_pre;
  276.             $fmt_post = $fmt_post . '</i>';
  277.         }
  278.         $schema_insert .= '<td class="print">' . $fmt_pre . htmlspecialchars($row['Field']) . $fmt_post . '</td>';
  279.         $schema_insert .= '<td class="print">' . htmlspecialchars($type) . '</td>';
  280.         $schema_insert .= '<td class="print">' . htmlspecialchars($row['Null'] == '' ? $GLOBALS['strNo'] : $GLOBALS['strYes']) . '</td>';
  281.         $schema_insert .= '<td class="print">' . htmlspecialchars(isset($row['Default']) ? $row['Default'] : '') . '</td>';
  282.  
  283.         if ($do_relation && $have_rel) {
  284.             $schema_insert .= '<td class="print">' . (isset($res_rel[$field_name]) ? htmlspecialchars($res_rel[$field_name]['foreign_table'] . ' (' . $res_rel[$field_name]['foreign_field'] . ')') : '') . '</td>';
  285.         }
  286.         if ($do_comments && $cfgRelation['commwork']) {
  287.             $schema_insert .= '<td class="print">' . ( isset($comments[$field_name]) ? htmlspecialchars($comments[$field_name]) : '') . '</td>';
  288.         }
  289.         if ($do_mime && $cfgRelation['mimework']) {
  290.             $schema_insert .= '<td class="print">' . ( isset($mime_map[$field_name]) ? htmlspecialchars(str_replace('_', '/', $mime_map[$field_name]['mimetype'])) : '') . '</td>';
  291.         }
  292.  
  293.         $schema_insert .= '</tr>';
  294.  
  295.         if (!PMA_exportOutputHandler($schema_insert)) return FALSE;
  296.     } // end while
  297.     PMA_DBI_free_result($result);
  298.  
  299.     return PMA_exportOutputHandler('</table>');
  300. }
  301. ?>
  302.